﻿#region Código Gerado Pela Fábrica de Software (Using)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using itau.im.entidade;
using EnterpriseLibraryWrapper;
#endregion

#region Código Gerado Pela Fábrica de Software (Namespace)
namespace itau.im.negocio
{
    #region Código Gerado Pela Fábrica de Software (Interface)

    /// <summary>
    /// **************************************************************************************************<BR/>
    /// AUTOR           : Fábrica de Software                                                             <BR/>
    /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
    /// ALTERADO POR    :                                                                                 <BR/>
    /// DATA ALTERAÇÃO  :                                                                                 <BR/>
    /// OBJETIVO        : Interface "IProdutoFinanceiroBS" utilizada para exibir o servico.               <BR/>
    /// **************************************************************************************************<BR/>
    /// </summary>
    [ServiceContract]
    public interface IProdutoFinanceiroBS
    {
        #region Código Gerado Pela Fábrica de Software (Métodos)

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para retornar a consulta.                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoClasseProduto">codigoClasseProduto</param>
        /// <returns>Lista de objetos "FamiliaProdutoFinanceiro".</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<FamiliaProdutoFinanceiro> ObterFamiliaProdutoFinanceiroPorCodigoClasseProduto(int codigoClasseProduto);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        ProdutoFinanceiro ObterArvoreProdutoDerivado(int codigoCurva, int codigoGrupoParametros);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para efetuar a atualização.                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="familiaProduto">objeto FamiliaProdutoFinanceiro</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void AtualizarFamiliaProdutoFinanceiro(FamiliaProdutoFinanceiro familiaProduto);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para retornar a consulta.                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "ProdutoFinanceiro".</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosFinanceiros();

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroDerivado> ObterProdutosDerivados();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Cria Classe Produto Financeiro                                                   <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="classeProdutoFinanceiro">Classe Produto</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarClasseProdutoFinanceiro(ClasseProdutoFinanceiro classeProdutoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Exclui Classe Produto Financeiro                                                 <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="codigoClasse">Código Classe</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void ExcluirClasseProdutoFinanceiro(int classeProdutoFinanceiroID);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Obtém Produto Financeiro por codigo                                              <BR/>
        ///                  Familia Produto                                                                  <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="codigoFamilia">Código família</param>
        /// <returns>Lista de produtos financeiros</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutoFinanceiroPorCodigoFamiliaProduto(int codigoFamiliaProdutoID);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Obtém Familia Produto Financeiro                                                 <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="codigoFamilia">Código Família</param>
        /// <returns>Familia Produto Financeiro</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        FamiliaProdutoFinanceiro ObterFamiliaProdutoFinanceiro(int codigoFamilia);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Obtém Classes Produto Financeiro                                                 <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <returns>Classe Produto Financeiro</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ClasseProdutoFinanceiro> ObterClassesProdutoFinanceiro();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Cria Familia Produto Financeiro                                                  <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="familia">Família</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarFamiliaProdutoFinanceiro(FamiliaProdutoFinanceiro familia);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Excluir Familia Produto Financeiro                                               <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="familiaProdutoID">Família Produto ID</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void ExcluirFamiliaProdutoFinanceiro(int familiaProdutoID);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                                                              <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                                                       <BR/>
        /// ALTERADO POR   :                                                                                  <BR/>
        /// DATA ALTERAÇÃO :                                                                                  <BR/>
        /// OBJETIVO       : Obter Familia Produto Financeiro                                                 <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <returns>Classe Produto Financeiro</returns>
        /// <param name="codigoClasse">Codigo Classe</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        ClasseProdutoFinanceiro ObterClasseProdutoFinanceiro(int codigoClasse);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método AtualizarClasseProdutoFinanceiro.                                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="classeProduto">ClasseProdutoFinanceiro</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void AtualizarClasseProdutoFinanceiro(ClasseProdutoFinanceiro classeProduto);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterProdutosDerivadosPorProduto.                                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoProduto">Codigo do Produto</param>
        /// <returns>Lista de objetos "ProdutoFinanceiroDerivado".</returns> 
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroDerivado> ObterProdutosDerivadosPorProduto(int codigoProduto);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterFamiliasProdutoFinanceiro.                                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "FamiliaProdutoFinanceiro".</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<FamiliaProdutoFinanceiro> ObterFamiliasProdutoFinanceiro();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarProdutoFinanceiro.                                                  <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        /// <returns>Codigo do Produto criado</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarProdutoFinanceiro(ProdutoFinanceiro produtoFinanceiro);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void ExcluirProdutoFinanceiro(ProdutoFinanceiro produtoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 02/09/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Produto Financeiro Com Produtos Derivados Associados                      <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="lista">listaProdutoFinanceiro</param>
        /// <returns>Lista de ProdutoFinanceiro</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutoFinanceiroComProdutosDerivadosAssociados(IList<ProdutoFinanceiro> listaProdutoFinanceiro);


        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Atualizar Produto Financeiro                                                    <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void AtualizarProdutoFinanceiro(ProdutoFinanceiro produtoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : ObterProdutoFinanceiroAlocacaoPorProduto                                        <BR/>
        /// **************************************************************************************************<BR/>
        /// </summary>
        /// <returns>Lista de ProdutoFinanceiroAlocacao</returns>
        /// <param name="codigoProdutoFinanceiro">codigoProdutoFinanceiro</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroAlocacao> ObterProdutoFinanceiroAlocacaoPorProduto(int codigoProdutoFinanceiro);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        ProdutoFinanceiroDerivado CriarProdutoFinanceiroDerivado(ProdutoFinanceiroDerivado produtoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 07/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Interface Obter Produto Financeiro Alocacoes Por Produto                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiroDerivado">Objeto ProdutoFinanceiroDerivado</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void ExcluirProdutoFinanceiroDerivado(ProdutoFinanceiroDerivado produtoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 07/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Interface Atualizar Produto Financeiro Derivato Exceto Codigo GR                <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiroDerivado">Objeto ProdutoFinanceiroDerivado</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void AtualizarProdutoFinanceiroDerivadoExcetoCodigoGR(ProdutoFinanceiroDerivado produtoFinanceiroDerivado);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        bool AtualizarProdutoFinanceiroDerivadoCompleto(ProdutoFinanceiroDerivado produtoFinaceiroDerivado, string codigoGRAntigo);

        #endregion
    }
    #endregion
}
#endregion
